package leetcode;

/**
 * @Project : AlgorithmLearning
 * @Package : Leetcode
 * @File : Q0189.java
 * @Author : WangRuoyu
 * @Date 2023/11/16 22:17
 */


public class Q0189 {
//    O(n) O(n)
//    public void rotate(int[] nums, int k) {
//        int[] res = new int[nums.length];
//        for (int i = 0; i < nums.length; i++) {
//            res[(i + k) % nums.length] = nums[i];
//        }
//        System.arraycopy(res, 0, nums, 0, nums.length);
//    }

//    O(n) O(1) 但是时间比上面慢
    public void rotate(int[] nums, int k) {
        int count = 0;
        for (int i = 0; i < k; i++) {
            int index = i;
            int value = nums[i];
            while (true) {
                int kindex = (index + k) % nums.length;
                int tmp = nums[kindex];
                nums[kindex] = value;
                value = tmp;
                index = kindex;
                count++;
                if (count == nums.length) {
                    return;
                }
                if (index == i) {
                    break;
                }
            }
        }
    }

    public static void main(String[] args) {
        Q0189 sl = new Q0189();
    }
}